//package com.ruoyi.framework.security.filter;
//
//import java.io.IOException;
//import javax.servlet.FilterChain;
//import javax.servlet.ServletException;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//import com.ruoyi.common.constant.Constants;
//import com.ruoyi.common.utils.MessageUtils;
//import com.ruoyi.framework.manager.AsyncManager;
//import com.ruoyi.framework.manager.factory.AsyncFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.security.authentication.AuthenticationManager;
//import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
//import org.springframework.security.core.Authentication;
//import org.springframework.security.core.context.SecurityContextHolder;
//import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
//import org.springframework.stereotype.Component;
//import org.springframework.web.filter.OncePerRequestFilter;
//import com.ruoyi.common.core.domain.model.LoginUser;
//import com.ruoyi.common.utils.SecurityUtils;
//import com.ruoyi.common.utils.StringUtils;
//import com.ruoyi.framework.web.service.TokenService;
//
///**
// * token过滤器 验证token有效性
// *
// * @author ruoyi
// */
//@Component
//public class JwtAuthenticationTokenFilterBak extends OncePerRequestFilter
//{
//    @Autowired
//    private TokenService tokenService;
//    @Autowired
//    private AuthenticationManager authenticationManager;
//
//    @Override
//    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
//            throws ServletException, IOException
//    {
//        LoginUser loginUser = tokenService.getLoginUser(request);
//        String token = request.getHeader("token");
//        if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication()))
//        {
//            tokenService.verifyToken(loginUser);
//            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());
//            authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
//            SecurityContextHolder.getContext().setAuthentication(authenticationToken);
//        }else if (StringUtils.isNotEmpty(token)){
//            String[] split = token.split(":");
//            Authentication authenticate = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(split[0], split[1]));
//
//            AsyncManager.me().execute(AsyncFactory.recordLogininfor(split[0], Constants.LOGIN_SUCCESS,
//                    MessageUtils.message("user.login.success")));
//            loginUser = (LoginUser) authenticate.getPrincipal();
//            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());
//            authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
//            SecurityContextHolder.getContext().setAuthentication(authenticationToken);
//        }
//        chain.doFilter(request, response);
//    }
//}
